package com.itheima.HomeWork_day05;
/*
多态: 好处主要体现在方法参数的多态和方法返回值的多态。
 */
public class PolymTest {

    public static void main(String[] args) {

        //向上转型
       // 成员变量: 编译看父类,运行看父类
      //成员方法: 编译时看父类,运行时看子类

        //好处主要体现在方法参数的多态和方法返回值的多态。

        Animal a=new Dog();
        Animal an=new Cat();

        a.eat();
        an.eat();
     //   an.act();  错误,因为父类中没有该方法,故无法访问到

        System.out.println("---------------------------");

        //向下转型,在向上转型基础之
        //访问子类特有的方法
        Cat c=(Cat) an;
        c.eat();
        System.out.println("这是cat独有的方法:");
        c.act();



    }
}

//父类动物类,定义方eat法
abstract class Animal{
   abstract void eat();
}

//dog类,继承A
class Dog extends Animal{
    @Override
    void eat() {
        System.out.println("啃骨头");
    }
}

//cat类,继承A
class Cat extends Animal{
    @Override
    void eat() {
        System.out.println("吃小鱼");
    }

    //定义猫特有的一个方法
   public void act(){
        System.out.println("猫捉老鼠");
    }
}